<?php
namespace App\Admin\Extensions\Exports;

use Encore\Admin\Grid\Exporters\AbstractExporter;

class OrderDetailsExporter extends AbstractExporter
{
    public function export()
    {
        // 导出的文件名
        // $filename = $this->getTable().'.csv';
        $filename = '订单明细-' . date('YmdHis') . '.csv';
        // 表头
        $titles = ['营业网点', '省', '地市', '区县', '流水号', '订单号', '订单类型', '商品名', '商品型号', '串码', '商品类目', '设备类型', '供应商', '备货商', '成交金额', '订单状态', '宽带账号', '销售时间', '销售人', '销售人手机号'];
        // 获取数据
        $data = $this->getData();
        // if (!empty($data)) {
        //     // 将多维数组转化为一维数组
        //     $columns = array_dot($this->sanitize($data[0]));
        //     // 获得key
        //     $titles = array_keys($columns);
        // }

        // 根据上面的数据拼接出导出数据，
        $output = '';
        $output = implode(',', $titles) . "\n";
        // 遍历数据
        foreach ($data as $row) {
            $state = '';
            if ($row['order_state'] == '0') {
                $state = '退货';
            } else if ($row['order_state'] == '1') {
                $state = '换货';
            } else if ($row['order_state'] == '2') {
                $state = '完成';
            } else {
                $state = '再次入网';
            }

            $row1 = [
                // 营业网点
                $row['business_hall']['name'], 
                // 省
                $row['business_hall']['province']['alias'], 
                // 地市
                $row['business_hall']['city']['alias'], 
                // 区县
                $row['business_hall']['district']['alias'], 
                // 流水号
                $row['running_number'], 
                // 订单号
                $row['order_no'], 
                // 订单类型
                $row['order_type']['name'], 
                // 商品名
                $row['item']['name'], 
                // 商品型号
                $row['item']['model'], 
                // 串码
                $row['code_id'], 
                // 商品类目
                $row['item']['category']['name'],
                // 设备类型
                $row['equipment_types']['name'], 
                // 供应商
                $row['item']['provider']['name'],
                // 备货商
                $row['item']['stock_merchant']['name'],
                // 成交金额
                $row['total'], 
                // 订单状态
                $state, 
                // 宽带账号
                $row['broadband_account'], 
                // 销售时间
                $row['create_order_time'], 
                // 销售人
                $row['sale_user']['real_name'], 
                // 销售人手机号
                $row['sale_user']['phone']
            ];
            $output .= implode(',', $row1) . "\n";

            // 获得指定的列
            // $row = array_only($row, $titles);
            // $output .= implode(',', array_dot($row))."\n";
        }

        // 在这里控制你想输出的格式,或者使用第三方库导出Excel文件
        $headers = [
            'Content-Encoding'    => 'UTF-8',
            'Content-Type'        => 'text/csv;charset=UTF-8',
            'Content-Disposition' => "attachment; filename=\"$filename\"",
        ];

        // 多加这一段解决乱码, 导出csv文件用excel打开乱码怎么解决, 用记事本另存ansi编码之后正常
        // echo "\xEF\xBB\xBF";

        // 导出文件，
        response(rtrim($output, "\n"), 200, $headers)->send();

        exit;
    }
}
